Presto তে User Defined Functions (UDFs) ব্যবহার করা হয় যখন আপনি নিজস্ব ফাংশন তৈরি করতে চান যা SQL কোয়েরি এক্সিকিউশনের সময় নির্দিষ্ট কাজ সম্পাদন করবে। Presto তে UDF তৈরি করতে Java ব্যবহার করা হয় এবং তারপর ফাংশনটি Presto সার্ভারে ডিপ্লয় করা হয়।
এখানে, আমরা দেখবো Java দিয়ে UDF তৈরি এবং Presto তে UDF Deploy করার পুরো প্রক্রিয়া।
Presto তে UDF তৈরি করতে হলে প্রথমে Java প্রোগ্রামিং ব্যবহার করে একটি ফাংশন লিখতে হবে যা SQL কোয়েরি এক্সিকিউট করার সময় নির্দিষ্ট কাজ করবে।
Presto UDF তৈরি করতে প্রথমে একটি Java Class তৈরি করতে হবে। এই ক্লাসটি Presto এর ফাংশন ইন্টারফেসের সাথে সামঞ্জস্যপূর্ণ হতে হবে। উদাহরণস্বরূপ, নিচে একটি সিম্পল Add
নামক UDF ফাংশন তৈরি করা হলো যা দুটি সংখ্যার যোগফল বের করবে।
package com.example.presto.udf;
import io.prestosql.spi.block.Block;
import io.prestosql.spi.type.BigintType;
import io.prestosql.spi.type.StandardTypes;
import io.prestosql.spi.function.Description;
import io.prestosql.spi.function.SqlFunction;
import io.prestosql.spi.function.SqlType;
@Description("Returns the sum of two integers")
public final class AddFunction
{
private AddFunction() {}
@SqlFunction("add") // UDF এর নাম হবে 'add'
@SqlType(StandardTypes.BIGINT) // আউটপুট টাইপ হবে BIGINT
public static long add(@SqlType(StandardTypes.BIGINT) long left,
@SqlType(StandardTypes.BIGINT) long right)
{
return left + right;
}
}
Presto তে UDF ডিপ্লয় করার জন্য Java Maven প্রজেক্ট সেটআপ করতে হবে। একটি pom.xml
ফাইল তৈরি করে ডিপেনডেন্সি যোগ করতে হবে। এখানে একটি সাধারণ Maven pom.xml
ফাইল দেওয়া হলো:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>presto-udf</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- Presto SPI Dependency -->
<dependency>
<groupId>io.prestosql</groupId>
<artifactId>presto-spi</artifactId>
<version>350</version>
</dependency>
<!-- Maven Compiler Plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
</project>
এখানে, presto-spi ডিপেনডেন্সি ব্যবহার করা হয়েছে যা Presto এর UDF তৈরি করার জন্য প্রয়োজনীয় ফাংশনালিটিগুলি অন্তর্ভুক্ত করে।
Maven ব্যবহার করে আপনার Java কোড কম্পাইল করুন এবং JAR ফাইল তৈরি করুন:
mvn clean install
এটি একটি JAR ফাইল তৈরি করবে যা আপনার UDF ফাংশন ধারণ করবে।
Presto তে UDF ডিপ্লয় করার জন্য, আপনার তৈরি JAR ফাইলটি Presto সার্ভারের plugin
ফোল্ডারে রাখতে হবে। তারপর Presto সার্ভারের catalog ফোল্ডারে একটি কনফিগারেশন ফাইল তৈরি করতে হবে।
Presto সার্ভারের plugin
ডিরেক্টরিতে আপনার JAR ফাইলটি স্থানান্তর করুন। উদাহরণস্বরূপ:
cp target/presto-udf-1.0-SNAPSHOT.jar /opt/presto/plugin/presto-udf/
Presto-তে UDF যোগ করার জন্য, etc/catalog
ফোল্ডারে একটি নতুন catalog file তৈরি করতে হবে। উদাহরণস্বরূপ, presto-udf.properties
নামে একটি ফাইল তৈরি করুন।
connector.name=presto-udf
plugin.dir=/opt/presto/plugin/presto-udf
JAR ফাইলটি যোগ করার এবং কনফিগারেশন ফাইল তৈরি করার পর, Presto সার্ভার রিস্টার্ট করুন:
/opt/presto/bin/launcher restart
এখন আপনি Presto CLI বা Web UI ব্যবহার করে আপনার নতুন UDF ফাংশনটি পরীক্ষা করতে পারেন।
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog <catalog-name> --schema <schema-name>
এখন আপনি add ফাংশনটি ব্যবহার করে দুটি মানের যোগফল বের করতে পারবেন:
SELECT add(5, 10);
এটি 15
ফিরিয়ে দিবে, কারণ এটি ৫ এবং ১০ এর যোগফল।
Presto তে UDF ব্যবহারের সময় কিছু পারফরম্যান্স বিষয়ক বিবেচনা রাখতে হবে:
Presto তে User Defined Functions (UDFs) তৈরি এবং ডিপ্লয় করা একটি শক্তিশালী উপায়, যার মাধ্যমে আপনি SQL কোয়েরির জন্য কাস্টম ফাংশন তৈরি করতে পারেন। Java ব্যবহার করে UDF তৈরি করার পর, সেটি Presto Plugin ফোল্ডারে ডিপ্লয় করতে হবে। পরে এটি Presto সার্ভারের সাথে সংযুক্ত হয়ে SQL কোয়েরি এক্সিকিউশনের সময় কাজ করবে।
Read more